package com.kevinkk.linklist;

/**
 * 给你一个链表的头节点 head 和一个整数 val ，请你删除链表中所有满足 Node.val == val 的节点，并返回 新的头节点
 *
 * 在链表中删除元素的关键就在于 找到前驱节点，因此用 pre 来遍历整个链表
 * 需要注意的是，删除了一个元素之后不能直接向后移动指针，而是需要再次检查新的元素
 */

public class RemoveLinkedListElements {
    public ListNode removeElements(ListNode head, int val) {
        ListNode dummy = new ListNode(-1, head), pre = dummy;
        while (pre != null && pre.next != null) {
            if (pre.next.val == val) {
                pre.next = pre.next.next;
            } else {
                pre = pre.next;
            }

        }

        return dummy.next;
    }
}
